package com.whfc.fse.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fse.dto.FseLiftDTO;
import com.whfc.fse.dto.FseLiftFvsDeviceDTO;
import com.whfc.fse.dto.OpenApiFseLiftDTO;
import com.whfc.fse.entity.FseLift;
import com.whfc.fse.param.*;

import java.util.List;

/**
 * @DESCRIPTION 升降机管理
 * @AUTHOR GuoDong_Sun
 * @DATE 2020/4/10
 */
public interface FseLiftService {

    /**
     * 升降机列表
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param keyword
     * @param bindFlag
     * @param netState
     * @return
     * @throws BizException
     */
    PageData<FseLiftDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword,
                              Integer bindFlag, Integer netState) throws BizException;

    /**
     * 升降机列表(不分页)
     *
     * @param deptId
     * @return
     * @throws BizException
     */
    ListData<OpenApiFseLiftDTO> list(Integer deptId) throws BizException;

    /**
     * 添加升降机
     *
     * @param request
     * @throws BizException
     */
    void add(FseLiftAddParam request) throws BizException;

    /**
     * 编辑升降机
     *
     * @param request
     * @throws BizException
     */
    void edit(FseLiftEditParam request) throws BizException;

    /**
     * 删除升降机
     *
     * @param liftId
     * @throws BizException
     */
    void del(Integer liftId) throws BizException;

    /**
     * 升降机绑定硬件
     *
     * @param request
     * @throws BizException
     */
    void bind(FseLiftBindParam request) throws BizException;

    /**
     * 升降机解绑硬件
     *
     * @param user
     * @param param 解绑参数
     * @throws BizException
     */
    void unbind(FseLiftUnbindParam param) throws BizException;

    /**
     * 升降机列表
     *
     * @param deptId
     * @param bindFlag
     * @return
     * @throws BizException
     */
    ListData<FseLiftDTO> list(Integer deptId, Integer bindFlag) throws BizException;

    List<FseLift> list(Integer deptId, String platform) throws BizException;

    /**
     * 根据升降机id查找
     *
     * @param liftId
     * @return
     * @throws BizException
     */
    FseLiftDTO detail(Integer liftId) throws BizException;

    /**
     * 获取视频监控设备ID列表
     *
     * @param liftId 升降机ID
     * @return 视频监控设备ID列表
     * @throws BizException 业务异常
     */
    List<FseLiftFvsDeviceDTO> getFvsDeviceList(Integer liftId) throws BizException;


    /**
     * 绑定视频监控设备
     *
     * @param fseLiftFvsParam 请求参数
     * @throws BizException 业务异常
     */
    void bindFvs(FseLiftFvsParam fseLiftFvsParam) throws BizException;

}
